package com.java.module.chat.mapper;

import java.util.List;

import com.java.common.lang.domain.entity.User;
import com.java.module.chat.domain.Session;
import com.java.module.chat.domain.dto.SessionDTO;

/**
 * 聊天：会话列Mapper接口
 * 
 * @author Administrator
 * @date 2021-05-13
 */
public interface SessionMapper {

    /**
     * 查询聊天：会话列
     * 
     * @param sessionId 聊天：会话列ID
     * @return 聊天：会话列
     */
    public Session selectSessionById(Long sessionId);

    /**
     * 查询聊天：会话列列表
     * 
     * @param session 聊天：会话列
     * @return 聊天：会话列集合
     */
    public List<Session> selectSessionList(SessionDTO session);

    /**
     * 查询聊天：会话列列表
     *
     * @param session 聊天：会话列
     * @return 聊天：会话列集合
     */
    public List<Session> selectSessionListAdmin(SessionDTO session);

    /**
     * 查询有未读消息的会话
     *
     * @return 聊天：会话列集合
     */
    public List<Session> selectMsgByTime();

    /**
     * 查询单个聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 聊天：会话列
     */
    public Session selectSession(Session session);

    /**
     * 查询客服未读消息
     * 
     * @param uid
     * @return 结果
     */
    public int getUnreadMsgCount(Long uid);

    /**
     * 查询客服未读消息
     * 
     * @param uid
     * @return 结果
     */
    public Session getUnreadMsg(Long uid);

    /**
     * 新增聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 结果
     */
    public int insertSession(Session session);

    /**
     * 修改聊天：会话列
     * 
     * @param session 聊天：会话列
     * @return 结果
     */
    public int updateSession(Session session);

    /**
     * 结束聊天
     * 
     * @param session 聊天：会话列
     * @return 结果
     */
    public int setSessionNullUid(Session session);

    /**
     * 删除聊天：会话列
     * 
     * @param sessionId 聊天：会话列ID
     * @return 结果
     */
    public int deleteSessionById(Long sessionId);

    /**
     * 批量删除聊天：会话列
     * 
     * @param sessionIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteSessionByIds(Long[] sessionIds);

    /**
     * 重置未读消息数量
     * 
     * @author yilabao
     * @date 2021年10月12日
     * @param session
     * @return int
     */
    public int updateSessionMsgRead(Session session);

    /**
     * 查询用户未读消息数量
     * 
     * @author yilabao
     * @date 2022年1月8日
     * @param uid
     * @return Long
     */
    public Integer getUserUnreadCount(Long uid);

    /**
     * 查询客服系统信息
     * @param session 查询信息
     * @return
     */
    Session getAdminSession(Session session);


    User selectNotesByIdUidOtherUid(User user);

}